home *** CD-ROM | disk | FTP | other *** search
/ Netrunner 2004 October / NETRUNNER0410.ISO / toku3 / httrack-3.32-2.exe / {app} / src_win / WinHTTrack / InsertUrl.cpp < prev    next >
C/C++ Source or Header  |  2004-02-14  |  6KB  |  235 lines

  1. // InsertUrl.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5.  
  6. extern "C" {
  7.   #include "HTTrackInterface.h"
  8.   #include "htsglobal.h"
  9.   #include "htsbase.h"
  10.   #include "htslib.h"
  11. }
  12. #include "winsock.h"
  13.  
  14. #include "Shell.h"
  15. #include "InsertUrl.h"
  16.  
  17. #ifdef _DEBUG
  18. #define new DEBUG_NEW
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23. extern HICON httrack_icon;
  24.  
  25. // Helper
  26. extern LaunchHelp* HtsHelper;
  27.  
  28.  
  29. /////////////////////////////////////////////////////////////////////////////
  30. // CInsertUrl dialog
  31.  
  32.  
  33. CInsertUrl::CInsertUrl(CWnd* pParent /*=NULL*/)
  34.     : CDialog(CInsertUrl::IDD, pParent)
  35. {
  36.     //{{AFX_DATA_INIT(CInsertUrl)
  37.     m_urllogin = _T("");
  38.     m_urlpass = _T("");
  39.     m_urladr = _T("");
  40.     //}}AFX_DATA_INIT
  41. }
  42.  
  43.  
  44. void CInsertUrl::DoDataExchange(CDataExchange* pDX)
  45. {
  46.     CDialog::DoDataExchange(pDX);
  47.     //{{AFX_DATA_MAP(CInsertUrl)
  48.     DDX_Text(pDX, IDC_urllogin, m_urllogin);
  49.     DDX_Text(pDX, IDC_urlpass, m_urlpass);
  50.     DDX_Text(pDX, IDC_urladr, m_urladr);
  51.     //}}AFX_DATA_MAP
  52. }
  53.  
  54.  
  55. BEGIN_MESSAGE_MAP(CInsertUrl, CDialog)
  56.     //{{AFX_MSG_MAP(CInsertUrl)
  57.     ON_BN_CLICKED(ID_capt, Oncapt)
  58.     //}}AFX_MSG_MAP
  59.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  60.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  61.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  62.   ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  63. END_MESSAGE_MAP()
  64.  
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CInsertUrl message handlers
  67.  
  68. BOOL CInsertUrl::OnInitDialog() 
  69. {
  70.     CDialog::OnInitDialog();
  71.   SetIcon(httrack_icon,false);
  72.   SetIcon(httrack_icon,true);
  73.   EnableToolTips(true);     // TOOL TIPS
  74.   SetForegroundWindow();   // yop en premier plan!
  75.     
  76.   if (LANG_T(-1)) {    // Patcher en franτais
  77.     SetWindowTextCP(this,  LANG(LANG_T1));
  78.     SetDlgItemTextCP(this, IDC_STATIC_adr,LANG(LANG_T2));
  79.     SetDlgItemTextCP(this, IDC_STATIC_auth,LANG(LANG_T4));
  80.     SetDlgItemTextCP(this, IDC_STATIC_login,LANG(LANG_T5));
  81.     SetDlgItemTextCP(this, IDC_STATIC_pass,LANG(LANG_T6));
  82.     SetDlgItemTextCP(this, IDC_STATIC_capt,LANG(LANG_T7));
  83.     SetDlgItemTextCP(this, ID_capt,LANG(LANG_T8));
  84.     SetDlgItemTextCP(this, IDOK,LANG(LANG_OK));
  85.     SetDlgItemTextCP(this, IDCANCEL,LANG(LANG_CANCEL));
  86.   }
  87.  
  88.     return TRUE;  // return TRUE unless you set the focus to a control
  89.                   // EXCEPTION: OCX Property Pages should return FALSE
  90. }
  91.  
  92.  
  93. // ------------------------------------------------------------
  94. // TOOL TIPS
  95. //
  96. // ajouter dans le .cpp:
  97. // remplacer les deux Wid1:: par le nom de la classe::
  98. // dans la message map, ajouter
  99. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  100. // dans initdialog ajouter
  101. // EnableToolTips(true);     // TOOL TIPS
  102. //
  103. // ajouter dans le .h:
  104. // char* GetTip(int id);
  105. // et en generated message map
  106. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  107. BOOL CInsertUrl::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  108. {
  109.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  110.   UINT nID =pNMHDR->idFrom;
  111.   if (pTTT->uFlags & TTF_IDISHWND)
  112.   {
  113.     // idFrom is actually the HWND of the tool
  114.     nID = ::GetDlgCtrlID((HWND)nID);
  115.     if(nID)
  116.     {
  117.       char* st=GetTip(nID);
  118.       if (st != "") {
  119.         pTTT->lpszText = st;
  120.         pTTT->hinst = AfxGetResourceHandle();
  121.         return(TRUE);
  122.       }
  123.     }
  124.   }
  125.   return(FALSE);
  126. }
  127. char* CInsertUrl::GetTip(int ID)
  128. {
  129.   switch(ID) {
  130.     case IDC_urladr:    return LANG(LANG_T10); break;
  131.     case IDC_urllogin:  return LANG(LANG_T12); break;
  132.     case IDC_urlpass:   return LANG(LANG_T13); break;
  133.     case ID_capt:       return LANG(LANG_T14); break;
  134.     case IDOK:           return LANG(LANG_TIPOK); break;      
  135.     case IDCANCEL:       return LANG(LANG_TIPCANCEL); break;
  136.     //case : return ""; break;
  137.   }
  138.   return "";
  139. }
  140. // TOOL TIPS
  141. // ------------------------------------------------------------
  142.  
  143. // Appel aide
  144. void CInsertUrl::OnHelpInfo2() {
  145.   (void)OnHelpInfo(NULL);
  146. }
  147.  
  148. BOOL CInsertUrl::OnHelpInfo(HELPINFO* dummy) 
  149. {
  150.   HtsHelper->Help();
  151.   return true;
  152. }
  153.  
  154. // Ne fait pas partie de la classe
  155. UINT RunBackCatchServer( LPVOID pP ) {
  156.   CInsertUrl* _this=(CInsertUrl*) pP;
  157.   //
  158.   char url[HTS_URLMAXSIZE*2]; url[0]='\0';
  159.   char method[32]; method[0]='\0';
  160.   char data[32768]; data[0]='\0';
  161.   if (catch_url(_this->soc,url,method,data)) {
  162.     if (_this->m_hWnd) {
  163.       char dest[HTS_URLMAXSIZE*2];
  164.       int i=0;
  165.       strcpybuff(dest,_this->dest_path);
  166.       {
  167.         char* a;
  168.         while(a=strchr(dest,'\\')) *a='/';
  169.         structcheck(dest);
  170.       }
  171.       do {
  172.         sprintf(dest,"%s%s%d",_this->dest_path,"hts-post",i);
  173.         i++;
  174.       } while(fexist(dest));
  175.       {
  176.         FILE* fp=fopen(dest,"wb");
  177.         if (fp) {
  178.           fwrite(data,strlen(data),1,fp);
  179.           fclose(fp);
  180.         }
  181.       }
  182.       // former URL!
  183.       {
  184.         char finalurl[HTS_URLMAXSIZE*2];
  185.         escape_check_url(dest);
  186.         sprintf(finalurl,"%s"POSTTOK"file:%s",url,dest);
  187.         SetDlgItemTextCP(_this, IDC_urladr,finalurl);
  188.       }
  189.     }
  190.   } else {
  191.     CString info;
  192.     info.Format("Error while capturing URL\n(from %s)",url);
  193.     AfxMessageBox(info);
  194.   }
  195. #ifdef _WIN32
  196.   closesocket(_this->soc);
  197. #else
  198.   close(_this->soc);
  199. #endif
  200.   // Quitter
  201.   if (_this->m_hWnd) {
  202.     if (_this->dial.m_hWnd) {
  203.       ::SendMessage(_this->dial.m_hWnd,WM_CLOSE,0,0);
  204.     }
  205.   }
  206.   //_this->dial.EndDialog(IDOK);
  207.   return 0;
  208. }
  209.  
  210. void CInsertUrl::Oncapt() 
  211. {
  212.   // Demander un port d'Θcoute
  213.   adr_prox[0]='\0';
  214.   port_prox=0;
  215.   soc=catch_url_init_std(&port_prox,adr_prox);
  216.   if (soc != INVALID_SOCKET) {
  217.     //
  218.     char s[8192];
  219.     sprintf(s,"Please TEMPORARILY set your browser's proxy preferences to:\r\n\r\nProxy's address:\r\n%s\r\nProxy's port:\r\n%d\r\n",adr_prox,port_prox);
  220.     //
  221.     dial.m_info=s;
  222.     // ECOUTER EN THREAD
  223.     AfxBeginThread(RunBackCatchServer,this);
  224.     // AFFICHER INFOS
  225.     {
  226.       CWaitCursor wait;      // Afficher curseur sablier
  227.       if (dial.DoModal() != IDOK) {
  228.       }
  229.     }
  230.     //
  231.   } else
  232.     AfxMessageBox("Error!..",MB_SYSTEMMODAL);
  233. }
  234.  
  235.